package template;

abstract class F{
    void call(){
        part1();
        part2();
    }
    abstract void part1();
    abstract void part2();
}

class C extends F{

    @Override
    void part1() {
        System.out.println("part1");
    }

    @Override
    void part2() {
        System.out.println("part2");
    }
}

public class Template {
    public static void main(String[] args) {
        System.out.println("template");

        C c = new C();
        // 我们没有调用part1 part2 是由系统自动调用的。
        c.call();
    }
}
